import threading

class TaskBySelf:
    """任务类，包含任务函数和停止标志"""
    def __init__(self, func, args, kwargs):
        self.func = func
        self.args = args
        self.kwargs = kwargs
        self.stop_event = threading.Event()  # 用于控制任务停止的事件

    def run(self):
        """执行任务"""
        print(f"任务 {self.func.__name__} 开始执行，参数: {self.args}, {self.kwargs}")
        while not self.stop_event.is_set():
            try:
                self.func(*self.args, **self.kwargs)
                self.stop_event.set()  # 如果任务正常完成，设置停止标志
            except Exception as e:
                print(f"任务 {self.func.__name__} 执行失败: {e}")
                break
        print(f"任务 {self.func.__name__} 已停止")

    def stop(self):
        """停止任务"""
        self.stop_event.set()
